import axios from 'axios'
// import { MessageBox, Message } from 'element-ui'

// 创建一个axios实例
const service = axios.create({
    baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
    withCredentials: true, // 发送cookie信息
    timeout: 5000 // request timeout
})


// request 拦截器
service.interceptors.request.use(
    config => {
        // todo 此处可以在请求前做些事情
        // if (store.getters.token) {
        //     // 让每个请求都检查 token 信息
        //     // ['X-Token'] 是一个自定义的 header，需要修改成真实值
        //     config.headers['X-Token'] = getToken()
        // }
        return config
    },
    error => {
        // todo 请求失败后要做的事情
        console.log(error) // for debug
        return Promise.reject(error)
    }
)

// response 拦截器
service.interceptors.response.use(
    /**
     * If you want to get http information such as headers or status
     * Please return  response => response
     */

    /**
     * Determine the request status by custom code
     * Here is just an example
     * You can also judge the status by HTTP Status Code
     */
    response => {
        const res = response.data

        // 如果状态码不是20000，则说明请求出错了
        if (res.code !== "0") {
            // Message({
            //     message: res.message || 'Error',
            //     type: 'error',
            //     duration: 5 * 1000
            // })

            // 50008: 非法 token; 50012: 已在其他客户端登录; 50014: Token 过期了;
            // if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
            //     // to re-login
            //     MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
            //         confirmButtonText: 'Re-Login',
            //         cancelButtonText: 'Cancel',
            //         type: 'warning'
            //     }).then(() => {
            //         store.dispatch('user/resetToken').then(() => {
            //             location.reload()
            //         })
            //     })
            // }
            return Promise.reject(new Error(res.message || 'Error'))
        } else {
            return res
        }
    },
    error => {
        console.log('err' + error) // for debug
        // Message({
        //     message: error.message,
        //     type: 'error',
        //     duration: 5 * 1000
        // })
        return Promise.reject(error)
    }
)

export default service